Amazon QuickSight で制限付きフォルダ内を使った時に匿名ユーザー向けのダッシュボード埋め込みが出来るか確認してみた

Amazon QuickSight で制限付きフォルダ内を使った時に匿名ユーザー向けのダッシュボード埋め込みが出来るか確認してみた

Clock Icon2024.09.26

いわさです。

Amazon QuickSight には制限付きフォルダというフォルダを作成する機能があります。

https://dev.classmethod.jp/articles/quicksight-restricted-folder/

こちらを使うとフォルダを使った強力な分離機能が提供され、アクセス権限が付与されたユーザー以外は一切アクセスができなくなります。
一方で、QuickSight にはユーザーを管理せずにリーダーセッションの従量課金となる匿名ユーザーという機能があります。
主に埋め込みダッシュボードで使われることが多いのですが、ユーザーが存在しないので権限を与えるということが出来ません。

あるとき、制限付きフォルダと匿名ユーザーを組み合わせた場合に埋め込みダッシュボードが機能するのか気になりました。
先日検証してみましたのでその結果を紹介します。

リーダーセッションキャパシティを有効化し制限付きフォルダにアセットを作成する

まずはリーダーセッションキャパシティを有効化します。

ED30F347-B8CB-4C93-A5FE-F84389996487_4_5005_c.jpeg

そして AWS CLI を使って制限付きフォルダを作成しました。

% cat hoge2.json
{
    "AwsAccountId": "123456789012",
    "FolderId": "hoge0917folder",
    "Name": "hoge0917folder",
    "FolderType": "RESTRICTED",
    "Permissions": [
        {
            "Principal": "arn:aws:quicksight:ap-northeast-1:123456789012:user/default/hogeadmin",
            "Actions": [
                "quicksight:CreateFolder",
                "quicksight:DescribeFolder",
                "quicksight:CreateFolderMembership",
                "quicksight:DeleteFolderMembership",
                "quicksight:DescribeFolderPermissions"
            ]
        }
    ],
    "SharingModel": "ACCOUNT"
}
% aws quicksight create-folder --cli-input-json file://hoge2.json --profile hogeadmin
{
    "Status": 200,
    "Arn": "arn:aws:quicksight:ap-northeast-1:123456789012:folder/hoge0917folder",
    "FolderId": "hoge0917folder",
    "RequestId": "913957d1-298b-4fd0-b403-eecb751f19d9"
}

360B6B6A-EF87-4C80-98B3-D0802F486C27.png

さらに、そのフォルダ内にデータセット・分析・ダッシュボードを作成します。
これらのアセットは制限付きフォルダに権限のあるユーザー以外は閲覧出来ず、フォルダ外に共有することも出来ません。

360B6B6A-EF87-4C80-98B3-D0802F486C27.png

埋め込み URL の発行

ではまずは埋め込み用 URL を発行します。

% cat hoge.json
{
    "AwsAccountId": "123456789012",
    "SessionLifetimeInMinutes": 60,
    "Namespace": "default",
    "AuthorizedResourceArns": [
        "arn:aws:quicksight:ap-northeast-1:123456789012:dashboard/e9323178-beb7-488f-b47b-702029e3b543"
    ],
    "ExperienceConfiguration": {
        "Dashboard": {
            "InitialDashboardId": "e9323178-beb7-488f-b47b-702029e3b543"
        }
    }
}
% aws quicksight generate-embed-url-for-anonymous-user --cli-input-json file://hoge.json --profile hogeadmin
{
    "Status": 200,
    "EmbedUrl": "https://ap-northeast-1.quicksight.aws.amazon.com/embed/e385 ... authcode=true",
    "RequestId": "26b50773-ee17-4bc8-bc14-95e3a9ba35ad",
    "AnonymousUserArn": "arn:aws:quicksight:ap-northeast-1:123456789012:anonymousUser/default/2af2107619bf48b8ad58e9244b451d5c"
}

この URL にアクセスしてみましょう。

56201938-ACC6-422C-BABA-F70E9A61C900.png

アクセス出来ましたね!制限付きフォルダ内のアセットでもgenerate-embed-url-for-anonymous-userで匿名ユーザーとしてアクセス出来ることが確認できました。

ダッシュボードのパブリック公開

1-Click 埋め込みとか言われたりもするのですが、毎回 URL を発行せずにダッシュボードをパブリック公開設定し、外部から同一の URL でアクセス可能にする機能があります。

https://dev.classmethod.jp/articles/quicksight-1-click-embedding/

制限付きフォルダ内のダッシュボードでこちらを使えるのか試してみます。
まずダッシュボードのパブリック公開は QuickSight の管理設定で許可する必要があるので、設定しておきます。

3507F266-C6E5-4190-B844-C87A87E95128.png

まずは制限付きではない通常のアセット共有の流れです。
作成済みのダッシュボードから「ダッシュボードの共有」メニューを選択します。

0E3F8EBF-4A9D-4A5D-8586-229B881FE657_4_5005_c.jpeg

そうするとダッシュボードの共有設定内で「インターネット上の全ユーザー(パブリック)」を ON に出来るようになっています。先ほどの QuickSight 管理設定によってここが ON 出来るようになってます。個別のダッシュボードで共有設定されないように管理者がガードレール設定出来る感じですね。

E38ED535-D2DD-40EC-883D-512446FDFE22.png

上記の「埋め込みコードをコピー」から共有 URL を含む iframe 文字列がコピー出来るのでそこからダッシュボード URL を取得してアクセスします。QuickSight の認証がされていないブラウザでアクセスしてみましょう。

C224A01D-A3A9-4149-B86F-A49386F1F500.png

おー、アクセス出来ました。これが匿名ユーザーのパブリックダッシュボードです。

で、制限付きフォルダ内のダッシュボードを今度は試してみますが、どうやらパブリックダッシュボードの設定は制限付きフォルダでは出来ないことがわかりました。
というかダッシュボードの共有設定が出来ません。

2DD236D2-4484-4519-B887-9E3D40123020.png

おそらく制限付きフォルダ内でユーザー共有の範囲を管理しているので個別のダッシュボードで共有設定は出来ない感じですね。
また制限付きフォルダでパブリックダッシュボード共有設定はなかったので、制限付きフォルダ内のダッシュボードを匿名ユーザーにパブリックアクセスさせることは出来なさそうです。

API による匿名セッションの払い出しを行うようにしましょう。

さいごに

本日は Amazon QuickSight で制限付きフォルダ内を使った時に匿名ユーザー向けのダッシュボード埋め込みが出来るか確認してみました。

結論としては API によるセッションを使った埋め込み用 URL は制限付きフォルダでも使えて、1-Click 埋め込みのパブリックアクセスについては制限付きフォルダでは使えないことがわかりました。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.